package ScalaStudy.chapter07

object Test12_DerivedCollection {
  def main(args: Array[String]): Unit = {


    /////////////////////////////////////////////////////////////////////////////////////////
    /////////////////////////////////////////  衍生集合  /////////////////////////////////////
    /////////////////////////////////////////////////////////////////////////////////////////


    val list = List(1,2,3,4,5)
    val list1 = List(2,3,4,5,6)

    println("=============1 获取集合的头部 ===============")

    println(list.head)            //第一个元素

    println("=============2 获取集合的尾部 ===============")

    println(list.tail)            //除了头都是尾

    println("=============3 获取集合中最后一个元素 ===============")

    println(list.last)

    println("=============4 初始元素（不包含最后一个的其他元素） ===============")

    println(list.init)

    println("=============5 反转元素 ===============")

    println(list.reverse)

    println("=============6 取前（后）n个元素 ===============")

    println(list.take(3))           //向前取三个元素
    println(list.takeRight(3))      //向后取3个元素

    println("=============6 去前（后）n个元素 ===============")

    println(list.drop(3))           //向前去除三个元素
    println(list.dropRight(3))      //向后去除3个元素


    ////////////////////////////
    //////  两个集合的操作  ///////
    ////////////////////////////

    println("===============8 并集 ===============")

    val list2 = list.union(list1)
    println(list2)

    println("===============9 交集 ===============")

    val list3 = list.intersect(list1)
    println(list3)

    println("===============10 差集 ===============")

    val list4 = list.diff(list1)  // list中list1没有的元素
    println(list4)

    val list5 = list1.diff(list) // list1中list没有的元素
    println(list5)

    println("===============11 拉链 ===============")

    println("zip: " + list.zip(list1))         //分别进行组合，list在前
    println("zip: " + list1.zip(list))         //分别进行组合，list1在前

    println("===============12 滑窗 ===============")

//    println(list.sliding(3))
    for (elem <- list.sliding(3)) println(elem)      //三个数一个窗口
    for (elem <- list.sliding(3,2)) println(elem)    //三个数一个窗口,步进为2








  }
}
